home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 9 / CDACTUAL9.iso / share / Dos / VARIOS / pascal / MAIL.SWG / 0006_Sort FIDO Node Numbers.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-02-21  |  2.0 KB  |  84 lines

  1. program sort_nodenumbers;
  2.  
  3. (* This is an example which sorts Fidonet node numbers. *)
  4. (* The routine is very slow and basic, but it works. *)
  5.  
  6. (* Made in January/1996 by Teemu Kiviniemi, 2:229/222@fidonet.org *)
  7.  
  8. type node=record
  9.   zone,net,node:word;
  10.  end;
  11.  
  12. const nodecount=1000;
  13.  
  14. var c:word;
  15.  ready:boolean;
  16.     temp:node;
  17.     nodes:array[0..nodecount] of node;
  18.  
  19. procedure swap(var a,b:word);
  20. var temp:word;
  21. begin
  22.  temp:=a;
  23.     a:=b;
  24.     b:=temp;
  25. end;
  26.  
  27. procedure printnumbers;
  28. var b:word;
  29. begin
  30.  for b:=0 to nodecount do
  31.      writeln(nodes[b].zone,':',nodes[b].net,'/',nodes[b].node);
  32. end;
  33.  
  34. begin
  35.     randomize;
  36.     for c:=0 to nodecount do
  37.      begin
  38.          nodes[c].zone:=random(6)+1;
  39.             nodes[c].net:=random(998)+1;
  40.             nodes[c].node:=random(998)+1;
  41.         end;
  42.     writeln('Before sorting:');
  43.     printnumbers;
  44.     { Sort the zones }
  45.     writeln('Zones...');
  46.  repeat
  47.      ready:=true;
  48.         for c:=0 to nodecount-1 do
  49.         if nodes[c].zone> nodes[c+1].zone then
  50.                 begin
  51.      swap(nodes[c].zone,nodes[c+1].zone);
  52.                     ready:=false;
  53.                 end;
  54.     until ready;
  55.     { Sort the nets }
  56.  writeln('Nets...');
  57.  repeat
  58.      ready:=true;
  59.         for c:=0 to nodecount-1 do
  60.         if (nodes[c].net> nodes[c+1].net) and
  61.       (nodes[c].zone=nodes[c+1].zone) then
  62.                 begin
  63.      swap(nodes[c].net,nodes[c+1].net);
  64.                     ready:=false;
  65.                 end;
  66.     until ready;
  67.     { Sort the nodes }
  68.     writeln('Nodes...');
  69.  repeat
  70.      ready:=true;
  71.         for c:=0 to nodecount-1 do
  72.         if (nodes[c].node> nodes[c+1].node) and
  73.       (nodes[c].net=nodes[c+1].net) and
  74.       (nodes[c].zone=nodes[c+1].zone) then
  75.                 begin
  76.      swap(nodes[c].node,nodes[c+1].node);
  77.                     ready:=false;
  78.                 end;
  79.     until ready;
  80.     writeln(#13,#10,'After sorting:');
  81.     printnumbers;
  82. end. === End SORTNODE.PAS ===
  83.  
  84.